package dlg.code.template;

/**
 * 模板方法
 * 一套固定的实现流程中为子类预留下可以微调的方法
 */
public abstract class DrinkTemplate {

    public final void create(){
        getWater();
        addDrink();
        getDrink();

        if (needClear()) {
            clearDrink();
        }
    }

    private void clearDrink() {
        System.out.println("clear drink");
    }

    protected boolean needClear() {
        return false;
    }

    void getWater(){}

    void addDrink(){}

    void getDrink(){}

}
